In the past helmet tracking has been done with optical, mechanical, ultrasonic, and magnetic techniques; each with various deficiencies. Common deficiencies are that the necessary computational hardware is often power hungry, relatively slow or generates excess heat or are more prone to system crashes due to the complex computations that have been required in the past.
SLAM typically refers to the problem of a moving sensor platform, such as a vehicle, a robot, or a human, and constructing a map of the environment surrounding the sensor platform, while concurrently estimating the location and motion of the platform through the environment. The use of cameras as part of the sensor platform adds another layer of complexity to the SLAM problem. Typically SLAM is run on a single image or stereo pair of images by a single processor to produce an independent SLAM solution for that one image or pair of images.
Natural features within the environment are used to construct the map and estimate the location and motion of the platform. An Extended Kalman Filter is used to continuously and dynamically update the map. The map is represented by a state vector {circumflex over (x)} and a covariance matrix P. The state vector is composed of the stacked state estimates of the camera and features and P is a square matrix of equal dimension which can be partitioned into sub matrix elements in the following manner:
      x    ^    =      (                                                      x              ^                        v                                                                          y              ^                        1                                                                          y              ^                        2                                                ⋮                      )  
  P  =      [                                        P            xx                                                P                          xy              1                                                            P                          xy              2                                                …                                                  P                                          y                1                            ⁢              x                                                            P                                          y                1                            ⁢                              y                1                                                                          P                                          y                1                            ⁢                              y                2                                                              …                                                  P                                          y                2                            ⁢              x                                                            P                                          y                2                            ⁢                              y                1                                                                          P                                          y                2                            ⁢                              y                2                                                              …                                      ⋮                          ⋮                          ⋮                          ⋱                      ]  
Known approaches to solving SLAM problems suffer from being computationally complex and time consuming and involve using a single processor for a single image or stereo pair. Increasing processing power may increase overall speed and reduce the time needed to complete the computation and thus may approximate a real time visual SLAM system. But the increased processing power means increased drain on power sources. This is particularly problematic for portable systems where power sources are limited in size and in the amount of power that can be provided. Other techniques used to speed up computation, e.g. parallelizing the code run on the processor, suffer their own problems including the need to rewrite source to properly parallelize the code.
Several attempts have been made to increase the usefulness of SLAM systems. Sometimes called distributed SLAM, these systems use data fusion in two distinct ways: a system comprised of multiple robots, each with a single sensor, or a system comprised of a single robot obtaining readings from multiple sensors of different types, i.e. an UltraViolet (UV) sensor and an InfraRed (IR) sensor. The added complexity of these distributed systems only increases the computational power requirements of making a real time visual SLAM system. The present invention overcomes one or more of these problems.